Skip to content

Cover all possible schedulables in main thread scheduler qt#550

Merged
AlexInLog merged 2 commits into
v2from
fix_main_thread_scheduler
Apr 1, 2024
Merged

Cover all possible schedulables in main thread scheduler qt#550
AlexInLog merged 2 commits into
v2from
fix_main_thread_scheduler

Conversation

@AlexInLog

Copy link
Copy Markdown
Owner

No description provided.

@AlexInLog AlexInLog changed the title fix main thread scheduler Cover all possible schedulables in main thread scheduler qt Apr 1, 2024
@github-actions

github-actions Bot commented Apr 1, 2024

Copy link
Copy Markdown
Contributor

BENCHMARK RESULTS (AUTOGENERATED)

ci-ubuntu-gcc

General

name rxcpp rpp prev rpp ratio
Subscribe empty callbacks to empty observable 304.69 ns 2.16 ns 2.16 ns 1.00
Subscribe empty callbacks to empty observable via pipe operator 302.37 ns 2.16 ns 2.16 ns 1.00

Sources

name rxcpp rpp prev rpp ratio
from array of 1 - create + subscribe + immediate 699.68 ns 0.31 ns 0.31 ns 1.00
from array of 1 - create + subscribe + current_thread 1061.37 ns 5.25 ns 5.25 ns 1.00
concat_as_source of just(1 immediate) create + subscribe 2243.94 ns 110.95 ns 114.24 ns 0.97
defer from array of 1 - defer + create + subscribe + immediate 742.91 ns 0.31 ns 0.31 ns 1.00
interval - interval + take(3) + subscribe + immediate 2153.77 ns 59.23 ns 59.23 ns 1.00
interval - interval + take(3) + subscribe + current_thread 3061.81 ns 32.71 ns 32.73 ns 1.00

Filtering Operators

name rxcpp rpp prev rpp ratio
immediate_just+take(1)+subscribe 1090.83 ns 0.31 ns 0.31 ns 1.00
immediate_just+filter(true)+subscribe 856.23 ns 0.31 ns 0.31 ns 1.00
immediate_just(1,2)+skip(1)+subscribe 1005.19 ns 0.31 ns 0.31 ns 1.00
immediate_just(1,1,2)+distinct_until_changed()+subscribe 861.39 ns 0.31 ns 0.31 ns 1.00
immediate_just(1,2)+first()+subscribe 1227.92 ns 0.31 ns 0.31 ns 1.00
immediate_just(1,2)+last()+subscribe 962.38 ns 0.31 ns 0.31 ns 1.00
immediate_just+take_last(1)+subscribe 1103.26 ns 18.36 ns 18.52 ns 0.99

Schedulers

name rxcpp rpp prev rpp ratio
immediate scheduler create worker + schedule 263.51 ns 2.16 ns 2.16 ns 1.00
current_thread scheduler create worker + schedule 364.98 ns 7.10 ns 7.15 ns 0.99
current_thread scheduler create worker + schedule + recursive schedule 819.01 ns 64.18 ns 64.58 ns 0.99

Transforming Operators

name rxcpp rpp prev rpp ratio
immediate_just+map(v*2)+subscribe 836.67 ns 0.31 ns 0.31 ns 1.00
immediate_just+scan(10, std::plus)+subscribe 900.32 ns 0.31 ns 0.31 ns 1.00
immediate_just+flat_map(immediate_just(v*2))+subscribe 2355.78 ns 175.84 ns 169.14 ns 1.04
immediate_just+buffer(2)+subscribe 1540.92 ns 13.59 ns 14.20 ns 0.96
immediate_just+window(2)+subscribe + subscsribe inner 2326.78 ns 1066.27 ns 1037.45 ns 1.03

Conditional Operators

name rxcpp rpp prev rpp ratio
immediate_just+take_while(false)+subscribe 845.87 ns - - 0.00
immediate_just+take_while(true)+subscribe 848.16 ns 0.31 ns 0.31 ns 1.00

Utility Operators

name rxcpp rpp prev rpp ratio
immediate_just(1)+subscribe_on(immediate)+subscribe 1990.71 ns 0.31 ns 0.31 ns 1.00

Combining Operators

name rxcpp rpp prev rpp ratio
immediate_just(immediate_just(1), immediate_just(1)) + merge() + subscribe 3469.39 ns 214.54 ns 175.99 ns 1.22
immediate_just(1) + merge_with(immediate_just(2)) + subscribe 3623.90 ns 190.77 ns 165.10 ns 1.16
immediate_just(1) + with_latest_from(immediate_just(2)) + subscribe - 135.75 ns 141.57 ns 0.96
immediate_just(immediate_just(1),immediate_just(1)) + switch_on_next() + subscribe 3555.26 ns 1152.64 ns 1126.43 ns 1.02
immediate_just(1) + zip(immediate_just(2)) + subscribe 2091.88 ns 241.80 ns 214.10 ns 1.13

Subjects

name rxcpp rpp prev rpp ratio
publish_subject with 1 observer - on_next 34.46 ns 11.71 ns 12.02 ns 0.97

Scenarios

name rxcpp rpp prev rpp ratio
basic sample 1399.74 ns 14.50 ns 14.55 ns 1.00
basic sample with immediate scheduler 1457.41 ns 5.55 ns 5.55 ns 1.00

Aggregating Operators

name rxcpp rpp prev rpp ratio
immediate_just+reduce(10, std::plus)+subscribe 918.71 ns 0.31 ns 0.31 ns 1.00

Error Handling Operators

name rxcpp rpp prev rpp ratio
create(on_next(1), on_error())+on_error_resume_next(immediate_just(2)))+subscribe 1030.15 ns 125.20 ns 122.03 ns 1.03

ci-macos

General

name rxcpp rpp prev rpp ratio
Subscribe empty callbacks to empty observable 1006.01 ns 4.35 ns 3.85 ns 1.13
Subscribe empty callbacks to empty observable via pipe operator 1007.83 ns 4.12 ns 3.87 ns 1.06

Sources

name rxcpp rpp prev rpp ratio
from array of 1 - create + subscribe + immediate 2004.76 ns 0.24 ns 0.23 ns 1.03
from array of 1 - create + subscribe + current_thread 2577.35 ns 26.68 ns 25.38 ns 1.05
concat_as_source of just(1 immediate) create + subscribe 5639.89 ns 347.94 ns 328.44 ns 1.06
defer from array of 1 - defer + create + subscribe + immediate 2086.67 ns 0.24 ns 0.23 ns 1.03
interval - interval + take(3) + subscribe + immediate 5216.65 ns 117.31 ns 114.40 ns 1.03
interval - interval + take(3) + subscribe + current_thread 6539.97 ns 111.78 ns 107.70 ns 1.04

Filtering Operators

name rxcpp rpp prev rpp ratio
immediate_just+take(1)+subscribe 3030.20 ns 0.25 ns 0.23 ns 1.08
immediate_just+filter(true)+subscribe 2219.72 ns 0.25 ns 0.23 ns 1.08
immediate_just(1,2)+skip(1)+subscribe 2894.07 ns 0.25 ns 0.23 ns 1.05
immediate_just(1,1,2)+distinct_until_changed()+subscribe 2248.44 ns 0.49 ns 0.47 ns 1.05
immediate_just(1,2)+first()+subscribe 3346.07 ns 0.25 ns 0.23 ns 1.05
immediate_just(1,2)+last()+subscribe 2486.40 ns 0.24 ns 0.23 ns 1.04
immediate_just+take_last(1)+subscribe 3233.18 ns 71.57 ns 71.45 ns 1.00

Schedulers

name rxcpp rpp prev rpp ratio
immediate scheduler create worker + schedule 900.16 ns 4.30 ns 3.93 ns 1.09
current_thread scheduler create worker + schedule 1255.70 ns 41.00 ns 39.53 ns 1.04
current_thread scheduler create worker + schedule + recursive schedule 2134.88 ns 233.24 ns 215.83 ns 1.08

Transforming Operators

name rxcpp rpp prev rpp ratio
immediate_just+map(v*2)+subscribe 2200.99 ns 0.25 ns 0.23 ns 1.07
immediate_just+scan(10, std::plus)+subscribe 2592.19 ns 0.49 ns 0.47 ns 1.05
immediate_just+flat_map(immediate_just(v*2))+subscribe 6428.08 ns 448.62 ns 419.63 ns 1.07
immediate_just+buffer(2)+subscribe 2968.95 ns 83.61 ns 69.89 ns 1.20
immediate_just+window(2)+subscribe + subscsribe inner 5865.11 ns 2441.33 ns 2275.36 ns 1.07

Conditional Operators

name rxcpp rpp prev rpp ratio
immediate_just+take_while(false)+subscribe 2179.34 ns - - 0.00
immediate_just+take_while(true)+subscribe 2168.86 ns 0.25 ns 0.23 ns 1.05

Utility Operators

name rxcpp rpp prev rpp ratio
immediate_just(1)+subscribe_on(immediate)+subscribe 5196.13 ns 0.25 ns 0.23 ns 1.06

Combining Operators

name rxcpp rpp prev rpp ratio
immediate_just(immediate_just(1), immediate_just(1)) + merge() + subscribe 8174.70 ns 487.34 ns 446.27 ns 1.09
immediate_just(1) + merge_with(immediate_just(2)) + subscribe 9593.48 ns 477.83 ns 446.31 ns 1.07
immediate_just(1) + with_latest_from(immediate_just(2)) + subscribe - 523.06 ns 474.71 ns 1.10
immediate_just(immediate_just(1),immediate_just(1)) + switch_on_next() + subscribe 8583.76 ns 2039.32 ns 1898.15 ns 1.07
immediate_just(1) + zip(immediate_just(2)) + subscribe 5435.40 ns 868.43 ns 889.58 ns 0.98

Subjects

name rxcpp rpp prev rpp ratio
publish_subject with 1 observer - on_next 78.37 ns 52.39 ns 47.28 ns 1.11

Scenarios

name rxcpp rpp prev rpp ratio
basic sample 3045.45 ns 118.40 ns 116.81 ns 1.01
basic sample with immediate scheduler 2966.18 ns 15.27 ns 14.07 ns 1.09

Aggregating Operators

name rxcpp rpp prev rpp ratio
immediate_just+reduce(10, std::plus)+subscribe 2535.86 ns 0.25 ns 0.23 ns 1.06

Error Handling Operators

name rxcpp rpp prev rpp ratio
create(on_next(1), on_error())+on_error_resume_next(immediate_just(2)))+subscribe 7066.72 ns 4338.27 ns 4084.45 ns 1.06

ci-ubuntu-clang

General

name rxcpp rpp prev rpp ratio
Subscribe empty callbacks to empty observable 285.50 ns 0.88 ns 0.88 ns 1.00
Subscribe empty callbacks to empty observable via pipe operator 280.44 ns 0.88 ns 0.88 ns 1.00

Sources

name rxcpp rpp prev rpp ratio
from array of 1 - create + subscribe + immediate 565.73 ns 0.31 ns 0.31 ns 1.00
from array of 1 - create + subscribe + current_thread 792.21 ns 5.55 ns 5.56 ns 1.00
concat_as_source of just(1 immediate) create + subscribe 1873.48 ns 113.41 ns 113.10 ns 1.00
defer from array of 1 - defer + create + subscribe + immediate 594.20 ns 0.31 ns 0.31 ns 1.00
interval - interval + take(3) + subscribe + immediate 1541.22 ns 58.31 ns 58.31 ns 1.00
interval - interval + take(3) + subscribe + current_thread 2115.67 ns 31.47 ns 31.55 ns 1.00

Filtering Operators

name rxcpp rpp prev rpp ratio
immediate_just+take(1)+subscribe 906.49 ns 0.31 ns 0.31 ns 1.00
immediate_just+filter(true)+subscribe 671.07 ns 0.31 ns 0.31 ns 1.00
immediate_just(1,2)+skip(1)+subscribe 862.14 ns 0.31 ns 0.31 ns 1.00
immediate_just(1,1,2)+distinct_until_changed()+subscribe 701.04 ns 0.31 ns 0.31 ns 1.00
immediate_just(1,2)+first()+subscribe 1142.94 ns 0.31 ns 0.31 ns 1.00
immediate_just(1,2)+last()+subscribe 752.98 ns 0.31 ns 0.31 ns 1.00
immediate_just+take_last(1)+subscribe 949.48 ns 0.31 ns 0.31 ns 1.00

Schedulers

name rxcpp rpp prev rpp ratio
immediate scheduler create worker + schedule 202.72 ns 0.88 ns 0.88 ns 1.00
current_thread scheduler create worker + schedule 311.32 ns 5.89 ns 5.58 ns 1.05
current_thread scheduler create worker + schedule + recursive schedule 625.97 ns 59.30 ns 60.81 ns 0.98

Transforming Operators

name rxcpp rpp prev rpp ratio
immediate_just+map(v*2)+subscribe 652.61 ns 0.31 ns 0.31 ns 1.00
immediate_just+scan(10, std::plus)+subscribe 737.03 ns 0.31 ns 0.31 ns 1.00
immediate_just+flat_map(immediate_just(v*2))+subscribe 1844.67 ns 120.63 ns 119.41 ns 1.01
immediate_just+buffer(2)+subscribe 1335.95 ns 13.89 ns 14.51 ns 0.96
immediate_just+window(2)+subscribe + subscsribe inner 2158.79 ns 811.11 ns 811.35 ns 1.00

Conditional Operators

name rxcpp rpp prev rpp ratio
immediate_just+take_while(false)+subscribe 660.27 ns - - 0.00
immediate_just+take_while(true)+subscribe 669.58 ns 0.31 ns 0.31 ns 1.00

Utility Operators

name rxcpp rpp prev rpp ratio
immediate_just(1)+subscribe_on(immediate)+subscribe 1606.35 ns 0.31 ns 0.31 ns 1.00

Combining Operators

name rxcpp rpp prev rpp ratio
immediate_just(immediate_just(1), immediate_just(1)) + merge() + subscribe 2523.72 ns 127.24 ns 126.13 ns 1.01
immediate_just(1) + merge_with(immediate_just(2)) + subscribe 3007.93 ns 121.27 ns 121.43 ns 1.00
immediate_just(1) + with_latest_from(immediate_just(2)) + subscribe - 110.67 ns 109.94 ns 1.01
immediate_just(immediate_just(1),immediate_just(1)) + switch_on_next() + subscribe 2630.66 ns 727.86 ns 727.96 ns 1.00
immediate_just(1) + zip(immediate_just(2)) + subscribe 1767.16 ns 164.44 ns 167.87 ns 0.98

Subjects

name rxcpp rpp prev rpp ratio
publish_subject with 1 observer - on_next 26.22 ns 14.19 ns 13.88 ns 1.02

Scenarios

name rxcpp rpp prev rpp ratio
basic sample 1050.31 ns 13.28 ns 13.28 ns 1.00
basic sample with immediate scheduler 1014.52 ns 6.17 ns 6.17 ns 1.00

Aggregating Operators

name rxcpp rpp prev rpp ratio
immediate_just+reduce(10, std::plus)+subscribe 738.74 ns 0.31 ns 0.31 ns 1.00

Error Handling Operators

name rxcpp rpp prev rpp ratio
create(on_next(1), on_error())+on_error_resume_next(immediate_just(2)))+subscribe 872.52 ns 126.29 ns 126.27 ns 1.00

ci-windows

General

name rxcpp rpp prev rpp ratio
Subscribe empty callbacks to empty observable 584.43 ns 4.01 ns 4.39 ns 0.91
Subscribe empty callbacks to empty observable via pipe operator 595.04 ns 4.01 ns 4.02 ns 1.00

Sources

name rxcpp rpp prev rpp ratio
from array of 1 - create + subscribe + immediate 1164.22 ns 5.55 ns 5.55 ns 1.00
from array of 1 - create + subscribe + current_thread 1437.28 ns 19.13 ns 19.14 ns 1.00
concat_as_source of just(1 immediate) create + subscribe 4725.74 ns 169.30 ns 190.21 ns 0.89
defer from array of 1 - defer + create + subscribe + immediate 1214.25 ns 5.55 ns 5.86 ns 0.95
interval - interval + take(3) + subscribe + immediate 3145.40 ns 134.24 ns 134.17 ns 1.00
interval - interval + take(3) + subscribe + current_thread 3459.52 ns 58.28 ns 65.53 ns 0.89

Filtering Operators

name rxcpp rpp prev rpp ratio
immediate_just+take(1)+subscribe 1885.64 ns 12.85 ns 12.86 ns 1.00
immediate_just+filter(true)+subscribe 1688.84 ns 12.35 ns 12.35 ns 1.00
immediate_just(1,2)+skip(1)+subscribe 2048.88 ns 13.10 ns 13.12 ns 1.00
immediate_just(1,1,2)+distinct_until_changed()+subscribe 1378.78 ns 15.95 ns 15.94 ns 1.00
immediate_just(1,2)+first()+subscribe 2086.94 ns 12.63 ns 12.64 ns 1.00
immediate_just(1,2)+last()+subscribe 1486.86 ns 14.08 ns 14.04 ns 1.00
immediate_just+take_last(1)+subscribe 2052.93 ns 60.34 ns 59.40 ns 1.02

Schedulers

name rxcpp rpp prev rpp ratio
immediate scheduler create worker + schedule 495.41 ns 6.17 ns 6.17 ns 1.00
current_thread scheduler create worker + schedule 662.72 ns 18.51 ns 24.83 ns 0.75
current_thread scheduler create worker + schedule + recursive schedule 1099.58 ns 118.16 ns 129.67 ns 0.91

Transforming Operators

name rxcpp rpp prev rpp ratio
immediate_just+map(v*2)+subscribe 1339.52 ns 12.31 ns 12.36 ns 1.00
immediate_just+scan(10, std::plus)+subscribe 1440.82 ns 21.27 ns 21.27 ns 1.00
immediate_just+flat_map(immediate_just(v*2))+subscribe 3945.77 ns 225.70 ns 229.32 ns 0.98
immediate_just+buffer(2)+subscribe 2332.12 ns 58.75 ns 59.42 ns 0.99
immediate_just+window(2)+subscribe + subscsribe inner 4167.89 ns 1541.20 ns 1534.45 ns 1.00

Conditional Operators

name rxcpp rpp prev rpp ratio
immediate_just+take_while(false)+subscribe 1324.05 ns 11.44 ns 11.95 ns 0.96
immediate_just+take_while(true)+subscribe 1340.50 ns 12.36 ns 15.12 ns 0.82

Utility Operators

name rxcpp rpp prev rpp ratio
immediate_just(1)+subscribe_on(immediate)+subscribe 3838.95 ns 7.71 ns 7.71 ns 1.00

Combining Operators

name rxcpp rpp prev rpp ratio
immediate_just(immediate_just(1), immediate_just(1)) + merge() + subscribe 5192.42 ns 252.92 ns 254.20 ns 0.99
immediate_just(1) + merge_with(immediate_just(2)) + subscribe 6464.77 ns 237.81 ns 235.58 ns 1.01
immediate_just(1) + with_latest_from(immediate_just(2)) + subscribe - 237.11 ns 441.76 ns 0.54
immediate_just(immediate_just(1),immediate_just(1)) + switch_on_next() + subscribe 6260.69 ns 960.82 ns 1479.16 ns 0.65
immediate_just(1) + zip(immediate_just(2)) + subscribe 3905.82 ns 536.02 ns 821.52 ns 0.65

Subjects

name rxcpp rpp prev rpp ratio
publish_subject with 1 observer - on_next 37.04 ns 27.44 ns 26.51 ns 1.03

Scenarios

name rxcpp rpp prev rpp ratio
basic sample 1878.25 ns 59.25 ns 59.35 ns 1.00
basic sample with immediate scheduler 1879.64 ns 35.48 ns 35.48 ns 1.00

Aggregating Operators

name rxcpp rpp prev rpp ratio
immediate_just+reduce(10, std::plus)+subscribe 1468.92 ns 17.81 ns 17.82 ns 1.00

Error Handling Operators

name rxcpp rpp prev rpp ratio
create(on_next(1), on_error())+on_error_resume_next(immediate_just(2)))+subscribe 1944.52 ns 335.83 ns 333.40 ns 1.01

@sonarqubecloud

sonarqubecloud Bot commented Apr 1, 2024

Copy link
Copy Markdown

@AlexInLog AlexInLog merged commit 6def295 into v2 Apr 1, 2024
@AlexInLog AlexInLog deleted the fix_main_thread_scheduler branch April 1, 2024 16:12
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant